#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int len = 0; // 用来保存food数组的元素个数

const char *food[] = {
	"好粥道", "农耕记", "大鸭梨烤鸭", "金手勺东北菜", "华莱士",
	"鸡蛋灌饼", "大盘鸡", "清真牛肉面", "米村拌饭", "隆江猪脚饭"
};

int main(int argc, char *argv[]) {
	if (argc != 2) {
		printf("用法: %s <选择的外卖数量>\n", argv[0]);
		return 1;
	}
	// 计算数组元素个数
	len = sizeof(food) / sizeof(food[0]);
	// 获取订餐份数
	int num = atoi(argv[1]);
	if (num < 1 || num > len) {
		printf("错误：请选择 1 到 %d 之间的外卖数量。\n", len);
		return 1;
	}
	// 设置随机种子
	srand(time(NULL));
	// 堆区分配空间 保存随机下标
	int *index = (int *)malloc(sizeof(int) * num);
	if(NULL == index){
		return -1;
	}
	memset(index, 0, sizeof(int) * num);
	// 获取随机下标
	int i = 0;
	int j = 0;
	for(i = 0; i < num;){
		index[i] = rand() % len;
		// 检查重复
		for(j = 0; j < i; j++){
			if(index[i] == index[j]){
				break;
			}
		}
		if(j == i){
			i++;
		}
	}
	// 输出
	printf("今天可以点：\n");
	for(i = 0; i < num; i++) {
		printf("%s\n", food[index[i]]);
	}
	// 释放空间
	free(index);
	index = NULL;
	return 0;
}
